-- 参数列表
local goodId = ARGV[1]
local userId = ARGV[2]
local orderId = ARGV[3]

-- 数据键
local stockKey = 'goodinfo:stock:' .. goodId

-- 检查库存是否存在
local stock = redis.call('GET', stockKey)
if not stock then
    return 2 -- 库存键不存在
end

-- 判断库存是否充足
if tonumber(stock) <= 0 then
    return 1 -- 库存不足
end

-- 扣减库存
redis.call('INCRBY', stockKey, -1)

-- 发送消息到队列
redis.call('XADD', 'stream.goodorders', '*', 'userId', userId, 'goodId', goodId, 'orderId', orderId)
return 0